class Lex {
    GRAMMAR = [
        {
            token : 'i',
            pattern: /if/
        },
        {
            token : 'e',
            pattern: /else/
        },{
            token : 'w',
            pattern: /while/
        },{
            token : 'd',
            pattern: /do-nothing/
        },{
            token : '(',
            pattern: /\(/
        },{
            token : ')',
            pattern: /\)/
        },{
            token : '{',
            pattern: /\{/
        },{
            token : '}',
            pattern: /\}/
        },{
            token : ';',
            pattern: /;/
        },{
            token : '=',
            pattern: /=/
        },{
            token : '+',
            pattern: /\+/
        },{
            token : '*',
            pattern: /\*/
        },{
            token : '<',
            pattern: /</
        },{
            token : 'n',
            pattern: /[0-9]+/
        },{
            token : 'b',
            pattern: /true|falsse/
        },{
            token : 'v',
            pattern: /[a-z]+/
        },
    ];
    constructor(
        public input:string
    ){}

    analyze(){

    }
    more_tokens(){
        return !this.input.length
    }
    next_token(){

    }
    rule_matching(input:string){

    }

    match_at_beginning(pattern:RegExp,input:string){
        
    }

}